package src

import (
	"fmt"
	"log"
	"time"

	"gorm.io/driver/mysql"
	"gorm.io/gorm"
)

//自己封装一个gorm的对象，避免每次做mysql操作时，都去写连接相关的代码
var DbHelper *gorm.DB
var err error

//init函数，是在包引入时就自动执行，所以在其它包里，使用DbHelper时，它就已经连接好了
func init() {
	dsn := "root:a5f374234e2de2f8@tcp(47.108.61.154:3306)/Activation?charset=utf8mb4&parseTime=True&loc=Local"
	fmt.Println("dsn:", dsn)
	DbHelper, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})
	if err != nil {
		//这个不仅会打印日志，还会关停服务
		log.Fatal("数据库连接失败：", err)
		return
	} else {
		fmt.Println("连接数据库成功")
	}
	//配置连接池，应该是配置了后，就不用管了，在开发过程中无感

	//得到mysql原生对象
	sqlDB, _ := DbHelper.DB()

	//设置空闲连接池中连接的最大数量
	sqlDB.SetMaxIdleConns(10)

	//设置打开数据库连接的最大数量。
	sqlDB.SetMaxOpenConns(100)

	//设置了连接可复用的最大时间。
	sqlDB.SetConnMaxLifetime(time.Hour)

}
